#ifndef SELECTIONMENU_H
#define SELECTIONMENU_H

#include <map>
#include <string>

#include "GeneralMenu.h"

using std::map;
using std::string;

//An abstract class which has defined the basic feature of a selection menu
class SelectionMenu: public GeneralMenu
{
public:
	//Constructors

	//Constructor which initializes the information bar message and the basic action which the selection menu provided
	SelectionMenu(string infoBar, string basicAction);

	//Virtual Destructor

	//Implemented by subclasses when necessary
	virtual ~SelectionMenu() {};

protected:
	//Member Functions which can only be used by subclasses

	//Display the content part of the selection menu (Provide choices for user to choose)
	void displayContent();

	//Add selection to the menu
	void addSelection(string choice);

	//Communicate with user to get the action required to preform
	int getSelectionFromUser() const;

private:
	map<int, string> selection;
};

#endif